﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace Clinica_Frba
{

    public partial class FormBuscarProfesionalParaTurno : Form
    {
        public FormBuscarProfesionalParaTurno()
        {
            InitializeComponent();
            InicializarCampos();
        }

        private void InicializarCampos()
        {
            SqlConnection myConnection = new SqlConnection(publico.ConnectionString);
            myConnection.Open();

            string strQuery = "SELECT Desc_Esp FROM ESPECIALIDAD";
            SqlCommand consulta = new SqlCommand(strQuery, myConnection);
            SqlDataReader executeCMD = consulta.ExecuteReader();

            dgvResultadoDeBusqueda.Rows.Clear();
            while (executeCMD.Read())
            {
                cbEspecialidad.Items.Add(executeCMD["Desc_Esp"].ToString());
            }

        }

        private void lLimpiarFiltros_Click(object sender, EventArgs e)
        {
            tbNombre.Clear();
            tbApellido.Clear();
            cbEspecialidad.SelectedIndex = -1;
            dgvResultadoDeBusqueda.Rows.Clear(); 
        }

        virtual protected void dgvResultadoDeBusqueda_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

            if (e.ColumnIndex == dgvResultadoDeBusqueda.Columns["Seleccionar"].Index)
            {
                if (e.RowIndex >= 0)
                {

                    SqlConnection myConnection = new SqlConnection(publico.ConnectionString);
                    myConnection.Open();

                    string strQuery = "SELECT 'existe' FROM AFILIADO WHERE ESTADO = 'H' AND ID_AFIL = '" + tbAfiliadoID.Text + "'";
                    SqlCommand consulta = new SqlCommand(strQuery, myConnection);
                    SqlDataReader executeCMD = consulta.ExecuteReader();

                    if (!executeCMD.HasRows)
                    {
                        Dialogos.MostrarMessageDialog("El Afiliado no existe o esta dado de baja");
                        return;
                    }

                    string strProfesionalID = dgvResultadoDeBusqueda.Rows[e.RowIndex].Cells["IDProfesional"].Value.ToString();

                    Hide();
                    FormBuscarTurno form = new FormBuscarTurno(tbAfiliadoID.Text, strProfesionalID);
                    form.ShowDialog();
                    Show();

                }

            }

        }

        private void lBuscar_Click(object sender, EventArgs e)
        {

            bool bHuboWhere = false;
            string strQuery = "SELECT pr.Nombre, pr.Apellido, pr.Id_Prof  FROM PROFESIONAL pr JOIN PROFESIONAL_ESPECIALIDAD pe ON pr.ID_PROF = pe.ID_PROF JOIN ESPECIALIDAD es ON pe.ID_ESP = es.ID_ESP WHERE ";

            if( cbEspecialidad.SelectedIndex > -1)
            {
                strQuery += ("es.Desc_Esp = '"+ cbEspecialidad.Text.ToString() + "' ");
                bHuboWhere = true;
            }
            else
            {
                strQuery = "SELECT pr.Nombre, pr.Apellido, pr.Id_Prof FROM PROFESIONAL pr WHERE ";
            }

            if ( tbNombre.Text.Length > 0)
            {
                if (bHuboWhere)
                    strQuery += " AND ";
                strQuery += ("pr.Nombre = '" + tbNombre.Text + "' ");
                bHuboWhere = true;
            }

            if (tbApellido.Text.Length > 0)
            {
                if (bHuboWhere)
                    strQuery += " AND ";
                strQuery += ("pr.Apellido = '" + tbApellido.Text + "' ");
                bHuboWhere = true;
            }

            if (!bHuboWhere)
            {
                strQuery = "SELECT Nombre, Apellido, Id_Prof FROM PROFESIONAL";
            }

            SqlConnection myConnection = new SqlConnection(publico.ConnectionString);
            myConnection.Open();
            SqlCommand consulta = new SqlCommand(strQuery, myConnection);
            SqlDataReader executeCMD = consulta.ExecuteReader();

            dgvResultadoDeBusqueda.Rows.Clear();
            while (executeCMD.Read())
            {
                dgvResultadoDeBusqueda.Rows.Add(executeCMD["nombre"], executeCMD["Apellido"], executeCMD["Id_Prof"]);
            }

            if(dgvResultadoDeBusqueda.Rows.Count == 0 )
            {
                Dialogos.MostrarMessageDialog("No se encontraron coincidencias...");
            }

        }

    }
}
